jQuery(document).ready(function (){

    var date = new Date();
    var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();


    //$.datepicker.regional['es'],

    
    $("#fecha_ag").datepicker({
        numberOfMonths: 2,
        minDate: new Date(y, m, d),
        dateFormat: 'dd/mm/yy',
        beforeShowDay:noFinesDeSemanaNiFestivos
      
    });
    
    /*$('#fecha_ag').dateEntry({
        dateFormat: 'dmy/'
    });*/

    $("#fecha_ag1").datepicker({
        numberOfMonths: 2,
        minDate: new Date(y, m, d),
        dateFormat: 'dd/mm/yy',
        beforeShowDay:noFinesDeSemanaNiFestivos
    });
    
    /*$('#fecha_ag1').dateEntry({
        dateFormat: 'dmy/'
        
    });*/


    $("#addTurno").button();
            

    init( 1 );
    init1( 1 );

    document.getElementById( 'hinicio').value = '01:00';
    document.getElementById( 'hfin').value = '01:00';
    
    
    $("#id_sede").load("/salus/AdministrarServlet", {
        op:"-43"
    }).change();

    /*Inicio agenda*/
    $("#id_especialidad").load("/salus/AdministrarServlet", {
        op:"-6"
    }).change(mostrar_medicos);

    /*validar formulario*/
    $("#formAgenda").validate({
        rules:{
            id_medico:{
                required:true
            },
            fecha_ag:{
                required:true
            },
            fecha_ag1:{
                required:true
            }
        }
    })
    
    $("input[name=chtodos]").change(function(){
        $('input[type=checkbox]').each( function() {			
            if($("input[name=chtodos]:checked").length == 1){
                this.checked = true;
            } else {
                this.checked = false;
            }
        });
    });


})
//$.parseJSON(myJsonString);

function retornaDiasFestivos(){
    $.ajax({
        type: "POST",
        url: "/salus/UtilServlet",
        data: "op=2",
        dataType: 'json',
        async :false,
        success: function(msg){
            diasfes = msg;
            
        }
    });
    return diasfes;
    
    
}

var   diasFestivos  = null;
diasFestivos = retornaDiasFestivos();

function noFinesDeSemanaNiFestivos(date) {
    var finesDeSemana = false;  
    if(finesDeSemana) {
        var noWeekend = $.datepicker.noWeekends(date, diasFestivos);
        noWeekend[2] = 'No se permite el ingreso de dia de fin de semana';
        return noWeekend[0] ? festivo(date) : noWeekend;
    }
    else return festivo(date);
}

function festivo(date) {
  
   
    //diasFestivos  = retornaDiasFestivos(); 
    //Se toma cada dato de la fecha, ya que el mes viene de 0 a 11, se le suma 1
    var m = date.getMonth() + 1, d = date.getDate(), y = date.getFullYear();
 
    //Si el mes es menor a 10 se concatena un 0 antes para que de el formato
    //if(m < 10)
    //m = '0' + m; 
    //Si el día es menor a 10 se concatena un 0 antes para que de el formato
    //if(d < 10)
    //d = '0' + d; 
    for (i = 0; i < diasFestivos.length; i++) {
        if($.inArray(d + '/' + m + '/' + y, diasFestivos) != -1) {
            return [false, "festivos", 'No se permite el ingreso de dias festivos'];
        }
    }
    return [true, ''];
}



function mostrar_medicos(){   
    $("#id_medico").load("/salus/AdministrarServlet", {
        op:"-17",
        id_especialidad:$("#id_especialidad").val()
    });
}



function init( increment ){
    var minObj = document.getElementById( 'minutes' );
    var hrsObj = document.getElementById( 'hours' );
    var merObj = document.getElementById( 'meridian' );
    var minute =0;
    var value;
    while( minute<60){
        value =  minute<10 ? '0' + minute : minute;
        minObj.options[ minObj.options.length ] = new Option( value, value);
        minute +=  increment ;
    }

    for ( var ind = 1; ind < 25; ind++ ){
        value = ( ind < 10 ) ? '0' + ind : ind;
        hrsObj.options[ hrsObj.options.length ] = new Option( value, value);
    }

//merObj.options[ 0 ] = new Option( 'AM', 'AM' );
//merObj.options[ 1 ] = new Option( 'PM', 'PM' );
}

function setTimeStamp(){
    var minObj = document.getElementById( 'minutes' );
    var hrsObj = document.getElementById( 'hours' );
    var merObj = document.getElementById( 'meridian' );
    document.getElementById( 'hinicio').value = hrsObj.value +':'+ minObj.value + ' ' + merObj.value;
}

function init1( increment ){
    var minObj = document.getElementById( 'minutes1' );
    var hrsObj = document.getElementById( 'hours1' );
    var merObj = document.getElementById( 'meridian1' );
    var minute =0;
    var value;
    while( minute < 60){
        value =  minute<10 ? '0' + minute : minute;
        minObj.options[ minObj.options.length ] = new Option( value, value);
        minute +=  increment ;
    }

    for ( var ind = 1; ind < 25; ind++ ){
        value = ( ind < 10 ) ? '0' + ind : ind;
        hrsObj.options[ hrsObj.options.length ] = new Option( value, value);
    }

// merObj.options[ 0 ] = new Option( 'AM', 'AM' );
// merObj.options[ 1 ] = new Option( 'PM', 'PM' );
}

function setTimeStamp1(){
    var minObj = document.getElementById( 'minutes1' );
    var hrsObj = document.getElementById( 'hours1' );
    var merObj = document.getElementById( 'meridian1' );
    document.getElementById( 'hfin').value = hrsObj.value +':'+ minObj.value + ' ' + merObj.value;
}

function calcularTurnos(){
    jQuery("#turnos").val(12);
}


function padNmb(nStr, nLen){
    var sRes = String(nStr);
    var sCeros = "0000000000";
    return sCeros.substr(0, nLen - sRes.length) + sRes;
}

function stringToSeconds(tiempo){
    var sep1 = tiempo.indexOf(":");
    var sep2 = tiempo.lastIndexOf(":");
    var hor = tiempo.substr(0, sep1);
    var min = tiempo.substr(sep1 + 1, sep2 - sep1 - 1);
    var sec = tiempo.substr(sep2 + 1);
    return (Number(sec) + (Number(min) * 60) + (Number(hor) * 3600));
}

function secondsToTime(secs){
    var hor = Math.floor(secs / 3600);
    var min = Math.floor((secs - (hor * 3600)) / 60);
    var sec = secs - (hor * 3600) - (min * 60);
    return padNmb(hor, 2) + ":" + padNmb(min, 2) + ":" + padNmb(sec, 2);
}

function substractTimes(t1, t2){
    var t1x = t1.split(" ");
    var t2x = t2.split(" ");
    t1 = t1x[0]+":00";
    t2 = t2x[0]+":00";


    var secs1 = stringToSeconds(t1);
    var secs2 = stringToSeconds(t2);
    var secsDif = secs1 - secs2;
    return secondsToTime(secsDif);
}

function calcT3(){
    var inicio = document.getElementById('hinicio').value;
    var fin = document.getElementById('hfin').value;
    var tcita = document.getElementById('tiempo').value;
    
    
    var res = substractTimes(fin, inicio);

    //alert(res)

    var mintot = 0;
    var turnos = 0;

    res = calcular();
   

    resx = res.split(":");
    if(parseInt(resx) < 0){
        //alert("La hora de inicio debe ser menor a la final")
        document.getElementById('valid1').value = 0;
    }else{
        document.getElementById('valid1').value = 1;
        var cad = res.split(":");
        var horas = cad[0];
        var minutos = cad[1];
        mintot = (parseInt(horas)*60)+parseInt(minutos);
        turnos = parseInt(mintot)/tcita;
        document.getElementById('turnos').value=Math.floor(turnos);

    }
}


function adcionarTurno(){


    if ($("#formAgenda").valid()){

        if(document.getElementById('tiempo').value>0){
            if(document.getElementById('valid1').value==1){
            
                if(document.getElementById('turnos').value>0)
                    
                    crearTurno();
                else
                    alert('El tiempo asigando para los turnos, supera el tiempo disponible')
            
            
            }else{
                alert('Verifique que la fecha/hora final, sea mayor a la fecha/hora inicial')
            }
        }else{
            alert('Debe configurar el tiempo Cita antes de adicionar el turno')
        }
    }

}


function crearTurno(){
    var sede = $("#id_sede").val();
    var medico = $("#id_medico").val();
    var fecha_ag = $("#fecha_ag").val();
    var fecha_ag1 = $("#fecha_ag1").val();
    



    /*
    var hinicio = $("#hinicio").val();
    var hfin = $("#hfin").val();
    */

    var hinicio = $("#hours").val()+":"+$("#minutes").val();
    var hfin = $("#hours1").val()+":"+$("#minutes1").val();


    var tiempo = $("#tiempo").val();
    var turnos = $("#turnos").val();

    var val = validarTurno(fecha_ag,fecha_ag1,hinicio,hfin,medico,sede);
    
    var selectedItems= new Array();
    var indice=0;
    $("#tdias input:checkbox:checked").each(function(){
        selectedItems[indice] = $(this).val();//El indice inicial cera 0
        indice++; //paso a incrementar el indice en 1
    });
    
    if (selectedItems.length>=1) {
        
     var listasem = selectedItems.toString();
     var listafes = diasFestivos.toString();


        var op = 1;
    
        if(val){

            $.ajax({
                type:'POST',
                url:'/salus/AgendaServlet',
                data:"op="+op+"&medico="+medico+"&fecha_ag="+fecha_ag+"&fecha_ag1="+fecha_ag1+"&hinicio="+hinicio+"&hfin="+hfin+"&tiempo="+tiempo+"&turnos="+turnos+"&sede="+sede+"&listasem="+listasem+"&listafes="+listafes,
                success:function(data) {
                    consultarTurnos();
                    $("#fecha_ag").val("");
                    $("#fecha_ag1").val("");
                    $("#tiempo").val("");
                    $("#turnos").val("");
                }
            });

        }
    }
    else{
        alert("Seleccione los dias de la semana.") 
    }
}


function validarTurno(fecha_ag,fecha_ag1,hinicio,hfin,medico,sede){
    var op = 5;
    var val = true;

    $.ajax({
        type:'POST',
        url:'/salus/AgendaServlet',
        data:"op="+op+"&medico="+medico+"&fecha_ag="+fecha_ag+"&fecha_ag1="+fecha_ag1+"&hinicio="+hinicio+"&hfin="+hfin+"&sede="+sede,
        async:false,
        success:function(data){
            if(parseInt(data)==1){
                alert("El turno ya se encuentra ocupado")
                val = false;
            }
        }
    });

    return val;
}


function consultarTurnos(){
    var sede = $("#id_sede").val();
    var medico = $("#id_medico").val();
    
    var op = 2;

    $.ajax({
        type:'POST',
        url:'/salus/AgendaServlet',
        data:"op="+op+"&medico="+medico+"&sede="+sede,
        success:function(data) {
            $("#turnos_medico").html(data)
            $("#tblturnos").zebra();
        }
    });
}



function validarCita(idturno){
    
    var band = true;
    
    var op = 6;   
    $.ajax({
        type:'POST',
        url:'/salus/AgendaServlet',
        data:"op="+op+"&id="+idturno,
        async: false,
        success:function(data) {
            if(parseInt(data)>0){
                band = false;
            }
        }
    });

    return band;

}

function quitarTurno(id){

    var op = 3;

    if(validarCita(id)){
        if(confirm('Seguro de borrar el turno?')){
            $.ajax({
                type:'POST',
                url:'/salus/AgendaServlet',
                data:"op="+op+"&id="+id,
                success:function(data) {
                    $("#turnos_medico").html(data)
                    consultarTurnos();
                }
            });

        }
    }else{
        alert('El turno ya tiene citas asignadas, si desea eliminarlo, debe anular todas las citas relacionadas')
    }
    
    
    
}





function calcular(){
    var op = 4;
    var resp = 0;

    var fecha_ini = $("#fecha_ag").val()+' '+$("#hours").val()+':'+$("#minutes").val();
    //var fecha_fin = $("#fecha_ag1").val()+' '+$("#hours1").val()+':'+$("#minutes1").val();
    var fecha_fin = $("#fecha_ag").val()+' '+$("#hours1").val()+':'+$("#minutes1").val();


    $.ajax({
        type:'POST',
        url:'/salus/AgendaServlet',
        data:"op="+op+"&fecha_ini="+fecha_ini+"&fecha_fin="+fecha_fin,
        async:false,
        success:function(data) {
            resp = segundos_a_horas(data);
        }
    });

    return resp;
}


function segundos_a_horas(sec)
{
    
    var hrs = Math.floor(sec/3600);
    var min = Math.floor((sec % 3600)/60);
    sec = sec % 60;
    
    if(sec<10) sec = "0" + sec;
    if(min<10) min = "0" + min;

    return hrs + ":" + min + ":" + sec;
    
}